"""
封装一个函数，实现首页index.html静态化
"""

from django.template import loader
from django.conf import settings
import os
from .utils import get_categories
from .models import ContentCategory

def generate_static_index_html():
    # ========首页三级分类导航===========
    categories = get_categories()
    # ========首页广告===========
    # contents = {
    #     'index_lbt'：[广告模型类对象....],
    #     'index_1f_logo'：[广告模型类对象....]
    # }
    contents = {}
    content_cats = ContentCategory.objects.all()
    for content_cat in content_cats:
        # content_cat是每一个广告分类对象 —— 代表一个页面的位置
        # status=True表明需要展示的广告，sequence排序决定当前广告在位置中的先后顺序
        content_queryset = content_cat.content_set.filter(status=True).order_by('sequence')
        contents[content_cat.key] = content_queryset

    # 1、构造模版参数
    context = {
        'categories': categories, # 用于渲染主页三级分类导航
        'contents': contents # 用于渲染主页中广告
    }
    # 2、实例化模版对象
    template = loader.get_template('index.html')
    # 3、渲染出完整html页面数据
    html_text = template.render(context=context)
    # 4、保存成静态文件 —— 包存到front_end_pc里
    # index.html静态文件路径
    # settings.BASE_DIR --> 指向django工程"内层目录"
    file_path = os.path.join(
        os.path.dirname(os.path.dirname(settings.BASE_DIR)),
        'front_end_pc/index.html'
    )
    with open(file_path, 'w') as f:
        f.write(html_text)